The present disclosure is generally directed to techniques for information protection and, more specifically, to techniques for information protection in a solid-state device based storage pool.
In general, cloud computing refers to Internet-based computing where shared resources, software, and information are provided to users of computer systems and other electronic devices (e.g., mobile phones) on demand, similar to the electricity grid. Adoption of cloud computing has been aided by the widespread utilization of virtualization, which is the creation of a virtual (rather than actual) version of something, e.g., an operating system, a server, a storage device, network resources, etc. A virtual machine (VM) is a software implementation of a physical machine (PM), e.g., a computer system, that executes instructions like a PM. VMs are usually categorized as system VMs or process VMs. A system VM provides a complete system platform that supports the execution of a complete operating system (OS). In contrast, a process VM is usually designed to run a single program and support a single process. A VM characteristic is that application software running on the VM is limited to the resources and abstractions provided by the VM. System VMs (also referred to as hardware VMs) allow the sharing of the underlying PM resources between different VMs, each of which executes its own OS. The software that provides the virtualization and controls the VMs is typically referred to as a VM monitor (VMM) or hypervisor. A hypervisor may run on bare hardware (Type 1 or native VMM) or on top of an operating system (Type 2 or hosted VMM).
Cloud computing provides a consumption and delivery model for information technology (IT) services based on the Internet and involves over-the-Internet provisioning of dynamically scalable and usually virtualized resources. Cloud computing is facilitated by ease-of-access to remote computing websites (e.g., via the Internet or a private corporate network) and frequently takes the form of web-based tools or applications that a cloud consumer can access and use through a web browser, as if the tools or applications were a local program installed on a computer system of the cloud consumer. Commercial cloud implementations are generally expected to meet quality of service (QoS) requirements of consumers and typically include service level agreements (SLAs). Cloud consumers avoid capital expenditures by renting usage from a cloud vendor (i.e., a third-party provider). In a typical cloud implementation, cloud consumers consume resources as a service and pay only for resources used.
An erasure code is a forward error correction (FEC) code for a binary erasure channel (common communication channel) that transforms a message of ‘k’ symbols into a longer message (codeword) with ‘n’ symbols such that the original message can be recovered from a subset of the ‘n’ symbols. Erasure codes, which may be used for storage protection in various storage systems (e.g., RAID 6 storage systems), are poised to underpin future storage systems, including cloud-based storage systems. An erasure code provides redundancy by breaking objects (e.g., an application block) into smaller fragments and storing the fragments in different places (e.g., on different hard disk drives (HDDs)). Using an erasure code, data can be recovered from a combination of less than all fragments of the data. An encoding rate ‘r’ is equal to ‘m’ divided by ‘n’ (where ‘m’ is the number of verified data fragments required to reconstruct original data and ‘n’ is total number of data fragments in the original data plus parity fragments) and is always less than one.
A solid-state drive (SSD) is a data storage device that uses solid-state memory to store persistent data with the intention of providing access in the same manner as a traditional block input/output (I/O) HDD. SSDs employ integrated circuits (chips) that retain data in non-volatile memory and include no moving parts. SSDs are typically less susceptible to physical shock, are silent, have lower access time and latency than HDDs, but are more expensive per gigabyte (GB) than HDDs. Most SSDs use NAND-based flash memory (flash), which retains memory state even without power. Flash stores information in an array of memory cells constructed from floating-gate transistors. Flash is accessed similar to other block devices, e.g., HDDs and memory cards. Each SSD block includes a number of pages that are typically 512, 2048, or 4096 bytes in size. Associated with each page are a few storage bytes (typically 1/32 of the data size) that can be used to store an error correcting code (ECC) checksum. Typical SSD block sizes include: 16 kB (32 pages of 512+16 bytes each); 128 kB (64 pages of 2048+64 bytes each); 256 kB (64 pages of 4096+128 bytes each); and 512 kB (128 pages of 4096+128 bytes each). For example, a 2 GB SSD with sixty-four pages (2 k size each) per SSD block has 2048 SSD blocks.